package com.cool.cloud.mapper;

import com.cool.cloud.entity.FileStore;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * @InterfaceName: FileStoreMapper
 * @Description: 与文件仓库相关的数据库操作
 * @author: laijunji
 * @date 2020/1/26 21:55
 * @Version: 1.0
 **/
@Mapper
public interface FileStoreMapper {

    /**
     * @return java.lang.Integer 返回影响数据库的行数，新增文件仓库id封装在实体类的id属性
     * @Description 添加文件仓库（用户注册时调用）
     * @Author laijunji
     * @Date 21:56 2020/1/26
     * @Param [fileStore]
     **/
    public Integer addFileStore(FileStore fileStore);

    /**
     * @return com.cool.cloud.entity.FileStore
     * @Description 根据用户id获得文件仓库
     * @Author laijunji
     * @Date 22:01 2020/1/26
     * @Param [fileStoreId]
     **/
    public FileStore getFileStoreByUserId(Integer userId);

    /**
     * @return com.cool.cloud.entity.FileStore
     * @Description 根据文件仓库id获得文件仓库
     * @Author laijunji
     * @Date 22:01 2020/1/26
     * @Param [fileStoreId]
     **/
    public FileStore getFileStoreById(Integer fileStoreId);

    /**
     * @return java.lang.Integer
     * @Description 修改仓库当前已使用的容量
     * @Author laijunji
     * @Date 21:18 2020/2/10
     * @Param [id, size]
     **/
    public Integer addSize(@Param("id") Integer id, @Param("size") Integer size);

    /**
     * @return java.lang.Integer
     * @Description 修改仓库当前已使用的容量
     * @Author laijunji
     * @Date 21:18 2020/2/10
     * @Param [id, size]
     **/
    public Integer subSize(@Param("id") Integer id, @Param("size") Integer size);

    /**
     * @return java.lang.Integer
     * @Description 获取仓库最大容量
     * @Author laijunji
     * @Date 21:18 2020/2/10
     * @Param [id, size]
     **/
    public Integer getMaxSize(@Param("id") Integer id);

    /**
     * @return java.lang.Integer
     * @Description 修改仓库最大容量
     * @Author laijunji
     * @Date 21:18 2020/2/10
     * @Param [id, size]
     **/
    public Integer editMaxSize(@Param("id") Integer id, @Param("size") Integer size);

    /**
     * @return java.lang.Integer
     * @Description 更新仓库权限
     * @Author laijunji
     * @Date 16:29 2020/3/10
     * @Param [id, permission]
     **/
    public Integer updatePermission(@Param("id") Integer id, @Param("permission") Integer permission, @Param("size") Integer size);

    /**
     * @return java.lang.Integer
     * @Description 通过主键删除仓库
     * @Author laijunji
     * @Date 20:32 2020/3/10
     * @Param [id]
     **/
    public Integer deleteById(Integer id);
}
